import type { BilibiliElements } from '../../../../../../types/constants/personalization/bilibili'
import type { ThemeType } from '../../../../../../types/interfaces'
import { OthersThemeService } from '../../../../../../lib/abstract'
import {
  BODY_SELECTOR,
  PLATFORM_PAGE_TYPES,
  SUPPORTED_PLATFORMS,
} from '../../../../../../types/constants'

/**
 * 主题服务测试链接
 */
export class BilibiliThemeService extends OthersThemeService {
  readonly name: string = 'BilibiliTheme'
  readonly platformPageType: string = PLATFORM_PAGE_TYPES.OTHERS.value
  private static instance: BilibiliThemeService
  declare readonly elements: BilibiliElements
  readonly wrapperSelector: string = BODY_SELECTOR

  constructor() {
    super(SUPPORTED_PLATFORMS.BILIBILI)

    this.updateElementStylesForTheme()
  }

  /**
   * 获取单例实例
   */
  static getInstance(): BilibiliThemeService {
    if (!BilibiliThemeService.instance) {
      BilibiliThemeService.instance = new BilibiliThemeService()
    }
    return BilibiliThemeService.instance
  }

  updateElementStylesForTheme(): void {
  }

  platformStyleVar(_theme: ThemeType): string {
    return ``
  }

  getBaseStyles(_theme: ThemeType): string {
    return ``
  }

  getPageStyles(_theme: ThemeType): string {
    return ``
  }

  getMainStyles(_theme: ThemeType): string {
    return ``
  }

  getPatchedStyles(_theme: ThemeType): string {
    return ``
  }

  getFixedStyles(_theme: ThemeType): string {
    return ``
  }
}
